package appagendaprofesores.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import appagendaprofesores.excepcion.DAOExcepcion;
import appagendaprofesores.modelo.PagoEstudiante;
import appagendaprofesores.util.ConexionBD;

public class PagoEstudianteDAO extends BaseDAO{

	
	public PagoEstudiante insertar(PagoEstudiante vo) throws Exception {
		String query = "insert into pagoestudiante(idEstudiante,fechapago,monto,estado,moneda) values (?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, vo.getIdestudiante());
			stmt.setString(2, vo.getFechapago());
			stmt.setDouble(3, vo.getMonto());
			stmt.setString(4, vo.getEstado());
			stmt.setString(5, vo.getMoneda());
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
		}

			int id = 0;
			query = "select last_insert_id()";
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
		if (rs.next()) {
			id = rs.getInt(1);
		}
		vo.setIdestudiante(id);

		} catch (Exception e) {
			throw new Exception("No se pudo registrar por el siguiente motivo: "+e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
		    this.cerrarStatement(stmt);
		    this.cerrarConexion(con);
		}
		return vo;
	}
	
	
	public ArrayList<PagoEstudiante > buscarpago(int idestudiante) throws DAOExcepcion {
		String query = "select idPagoEstudiante,idEstudiante,fechapago,monto,estado,moneda from pagoestudiante where idestudiante ="+ idestudiante;
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		
		ArrayList<PagoEstudiante> lista = new ArrayList<PagoEstudiante>();
		
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			PagoEstudiante obj = new PagoEstudiante();
			
			while (rs.next()) {
				
				
				obj.setIdpagoestudiante(rs.getInt("idpagoestudiante"));
				obj.setIdestudiante(rs.getInt("idestudiante"));
				obj.setFechapago(rs.getString("fechapago"));
				obj.setMonto(rs.getDouble("monto"));
				obj.setEstado(rs.getString("estado"));
				obj.setMoneda(rs.getString("moneda"));
				lista.add(obj);
				
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	
		return lista;
	}
	
	
	public PagoEstudiante actualizar(PagoEstudiante pa) throws DAOExcepcion {
		
		//String query = "update pagoestudiante set fechapago=?,monto=?,estado=?,moneda=? whrere idpagoestudiante=?";
		
		String	query = "UPDATE agendaprofesores.pagoestudiante SET idPagoEstudiante=?, monto=?,fechaPago =?, estado=?, moneda=? WHERE idPagoEstudiante=?";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, pa.getIdpagoestudiante());
			stmt.setDouble(2, pa.getMonto());
			stmt.setString(3,pa.getFechapago());
			stmt.setString(5, pa.getEstado());
			stmt.setString(4, pa.getMoneda());
			stmt.setInt(6, pa.getIdestudiante());
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo actualizar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return pa;
		
		
	}
	
//	public String Actualizar(PagoEstudiante obj) throws DAOExcepcion{
//		String query = "update set fechapago=?,monto=?,estado=?,moneda=? from pagoestudiante whrere idpagoestudiantee=" +obj.getIdpagoestudiante();
//		Connection con = null;
//		PreparedStatement stmt = null;
//		ResultSet rs = null;
//	
//		PagoEstudiante obj1 = new PagoEstudiante();
//		
//		obj.setIdestudiante(rs.getInt("idestudiante"));
//		
//		
//		
//		
//		return "";
//	}
	
	}

